package topevery.syn.data.model;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public abstract class GpsDataCommon implements IGlbModel {

    @JSONField(name = "d")
    public Long fid;

    /**
     * 设备号
     **/
    @JSONField(name = "e")
    public String clientKey;
    /**
     * 客户端IP
     */
    @JSONField(name = "f")
    public String clientIp;
    /**
     * 客户端端口
     */
    @JSONField(name = "g")
    public Integer clientIpPort;

    /**
     * 百度经度
     **/
    @JSONField(name = "h")
    public Double geoX;

    /**
     * 百度摩纬度
     **/
    @JSONField(name = "i")
    public Double geoY;

    /**
     * 百度摩卡x
     **/
    @JSONField(name = "j")
    public Double absX;

    /**
     * 百度摩卡y
     **/
    @JSONField(name = "k")
    public Double absY;

    /**
     * gps时间
     **/
    @JSONField(name = "l")
    public LocalDateTime gpsDate;

    /**
     * 速度，米每秒
     **/
    @JSONField(name = "m")
    public Double speed;

    /**
     * 方位
     **/
    @JSONField(name = "n")
    public Double degree;

    /**
     * 卫星数
     **/
    @JSONField(name = "o")
    public Integer starNumber;

    /**
     * 数据入库时间
     **/
    @JSONField(name = "p")
    public LocalDateTime dbCreateDate;
    public Boolean isInsertTrace;
    public Double outPutVal1;
    public Double outPutVal2;
    /// <summary>
    /// 终端状态
    /// </summary>
    @JSONField(name = "q")
    public Short clientStatus;
    /**
     * 设备电量
     */
    @JSONField(name = "r")
    public Short voltageLevel;
    /**
     * 设备信号强度
     */
    @JSONField(name = "s")
    public Short gsmSignalIntensity;
    public Boolean isLbsData;

    @JSONField(name = "t")
    public Short upModel;
    /**
     * 0实时上传，1补传
     **/
    @JSONField(name = "u")
    public Short upType;
    /**
     * 状态
     */
    @JSONField(name = "v")
    public Integer state;
    /**
     * 报警标志
     */
    @JSONField(name = "w")
    public Integer alarmFlag;
    /**
     * 是否打着火
     */
    @JSONField(name = "x")
    public Boolean accState;
    @JSONField(name = "y")
    public Boolean powerState;
    public Integer packageType;
    public String serviceIp;
    public Integer servicePort;

    /**
     * 设备总里程
     **/
    @JSONField(name = "a2")
    public Integer mileageNum;

    @JSONField(name = "z")
    public Double liquid1Level;
    @JSONField(name = "a1")
    public Double liquid2Level;
    public Double oilLevel;
    public Double altitude;

    @JSONField(name = "a3")
    public Double oilRatio;

    @JSONField(name = "a4")
    public Double handGpsWeight;

    @JSONField(name = "a5")
    public Integer packetType;

    @JSONField(name = "a6")
    public Byte buttonStatus;

    /**
     * 是否运动
     **/
    @JSONField(name = "a7")
    public Byte movementState;

    @JSONField(name = "a8")
    public String rfid;

    /**
     * wgs84经度
     **/
    @JSONField(name = "a21")
    public Double lngSrc;

    /**
     * wgs84纬度
     **/
    @JSONField(name = "a22")
    public Double latSrc;

    @Override
    public String getGlbModelKey() {
        return clientKey;
    }

    //柳州、
    // 设备连接状态，0,0,0,0,0,0...........................................
// 位	    定义	                                    描述及要求
//0	        1：连接，0：未连接	            篷布检测装置
//1	        1：连接，0：未连接	            举升检测装置
//2	        1：连接，0：未连接	            重空载检测装置
//3~5	    1：连接，0：未连接	             保留
//6	        1：连接，0：未连接	            身份验证装置
//7	        1：连接，0：未连接	            显示外屏
//8	        1：连接，0：未连接	            显示内屏
//9	        1：连接，0：未连接	            DSM
//10	    1：连接，0：未连接	            BSD
//11	    1：连接，0：未连接	            ADAS
//12	    1：连接，0：未连接	            第一路摄像头
//13	    1：连接，0：未连接	            第二路摄像头
//14	    1：连接，0：未连接	            第三路摄像头
//15	    1：连接，0：未连接	            第四路摄像头
//16	    1：连接，0：未连接	            第五路摄像头
//17	    1：连接，0：未连接	            第六路摄像头
//18	    1：连接，0：未连接	            第七路摄像头
//19~31	1：连接，0：未连接	            保留
    @JSONField(name = "a31")
    public String connectionStatus;

    //货箱状态 0,0,0,0
// 位	    定义	                                                    描述及要求
//0	        1：关闭；2：打开；3：异常;	            篷布状态
//1	        1：平放；2：举升；3：异常	            举升状态
//2	        1、空载；2、重载；3、异常	            重空载状
//3 	                                        	                        保留
    @JSONField(name = "a32")
    public String containerStatus;

    //电子围栏报警，0,0,0
    // 位	    定义	                                                                                                                描述及要求
//0	        1：工地；2：禁区；3：消纳场；4：限速圈；5：停车场；6：路线            电子围栏类型
//1	        	                                                                                                                    电子围栏ID
//2	        0：进；1：出	            方向
    @JSONField(name = "a33")
    public String fenceAlarm;

    //违规报警，0,0,0,0,0........
// 位	    定义	                                    描述及要求
//0	举升作弊，标志维持至解除
//1	篷布作弊，标志维持至解除
//2	空重车作弊，标志维持至解除
//3	GPS作弊，标志维持至解除
//4	ECU作弊，标志维持至解除
//5~15	保留
//16	车速线被剪报警，标志维持至解除
//17	（重车）未密闭行驶报警，标志维持至解除
//18	非法举升，标志维持至解除
//19	无证，标志维持至解除
//20	证件无效，标志维持至解除
//21	偷运，标志维持至解除
//22	越界，标志维持至解除
//23~31	保留
    @JSONField(name = "a34")
    public String violationAlarm;

    //限制状态  0,0,0,0,0,0
// 位	    定义
//0	        1：锁车;
//1	        1：限速；
//2	        1、限举
//3	        锁车原因，0：未锁车1：平台下发锁车
//4	        限速原因，0：未限速(最大车速)1：平台下发限速2：（重车）顶盖未密闭行驶限速3：重车越界限速
//5	        限举原因，0：未限举1：平台下发限举2：重车不在指定区域限举
    @JSONField(name = "a35")
    public String limitStatus;
    //柳州

    //文件id
    @JSONField(name = "a36")
    public String fileId;

    /**
     * 尾板开关信号 0：尾板关闭，1：尾板打开
     */
    @JSONField(name = "a37")
    public Byte tailboardStatus;

    /**
     * RFID设备连通信号 0：设备断开，1：设备连通
     */
    @JSONField(name = "a38")
    public Byte rfidSignal;

    /**
     * 步数统计
     */
    @JSONField(name = "a39")
    public int stepCountCurr;

    @JSONField(name = "y39")
    public String modelJson;
}
